



public class Principal {
	public static void main(String[] args) {

		// tabuleiro
		int[][] tabuleiroAtual = new LeitorDePPM(args[0]).tabuleiro;

		// coordenada da formiga
		String[] coordenadaFormiga = args[1].split("x");
		int formigaAtomicaX = Integer.parseInt(coordenadaFormiga[1])+1;
		int formigaAtomicaY = Integer.parseInt(coordenadaFormiga[0])+1;

		// iteracoes
		int numeroDeIteracoes = Integer.parseInt(args[2]);

		// numero de tratadores de linhas
		int numeroDeTratadoresDeLinhas = Integer.parseInt(args[3]);

		
		// Criando os caras
		Monitor monitor = new Monitor(numeroDeTratadoresDeLinhas);
		GerenciadorDeInformacoes gerenciador = new GerenciadorDeInformacoes(
				tabuleiroAtual, formigaAtomicaX, formigaAtomicaY);
		Coordenador coordenador = new Coordenador(gerenciador, monitor,
				numeroDeIteracoes);

		// Calculando a quantidade de linhas por tratador
		int numeroDeLinhasPorTratador = (tabuleiroAtual.length - 2)
				/ numeroDeTratadoresDeLinhas;

		// imprime primeiro tabuleiro
		// TODO: Eliminar isso
		gerenciador.imprime();
		
		// primeiro ao penultimo tratador
		for (int i = 0; i < numeroDeTratadoresDeLinhas - 1; i++) {
			int linhaInicial = i * numeroDeLinhasPorTratador + 1;
			int linhaFinal = (i + 1) * numeroDeLinhasPorTratador;
			TratadorDeLinhas tratadorDeLinhas = new TratadorDeLinhas(
					linhaInicial, linhaFinal, numeroDeIteracoes, gerenciador,
					monitor);
			tratadorDeLinhas.start();
		}

		// ultimo tratador
		int linhaInicial = (numeroDeTratadoresDeLinhas - 1)
				* numeroDeLinhasPorTratador + 1;
		int linhaFinal = tabuleiroAtual.length - 2;
		TratadorDeLinhas tratadorDeLinhas = new TratadorDeLinhas(linhaInicial,
				linhaFinal, numeroDeIteracoes, gerenciador, monitor);
		tratadorDeLinhas.start();
		
		// Que comece a brincadeira!!!
		coordenador.rodaJogo();

	}

//	private static int[][] teste() {
//		int h = 100;
//		int w = 100;
//		int[][] tabuleiro = new int[h][w];
//		
//		
//		tabuleiro[47][47] = 1;
//		tabuleiro[48][48] = 1;
//		tabuleiro[49][49] = 1;
//		tabuleiro[50][50] = 1;
//		tabuleiro[51][51] = 1;
//		
//		tabuleiro[47][49] = 1;
//		tabuleiro[47][51] = 1;
//		tabuleiro[48][50] = 1;
//		tabuleiro[49][47] = 1;
//		tabuleiro[49][51] = 1;
//		
//		tabuleiro[50][48] = 1;
//		tabuleiro[51][47] = 1;
//		tabuleiro[51][49] = 1;
//		
//		return tabuleiro;
//	}
	
	
}
